/*
//              INTEL CORPORATION PROPRIETARY INFORMATION
//  This software is supplied under the terms of a license  agreement or
//  nondisclosure agreement with Intel Corporation and may not be copied
//  or disclosed except in  accordance  with the terms of that agreement.
//    Copyright (c) 2006-2007 Intel Corporation. All Rights Reserved.
//
*/
#include "umc_defs.h"
#if defined (UMC_ENABLE_DVHD_VIDEO_ENCODER)

#ifndef __DV100_VIDEO_ENCODER_H
#define __DV100_VIDEO_ENCODER_H

#include "ippdefs.h"
#include "umc_dv_video_encoder.h"
#include "umc_video_resizing.h"
#include "umc_video_data.h"
#include "umc_dv100_enc_segment_compressor.h"

namespace UMC
{

#define SYSTEM_1080_60I_FRAMERATE 29.97
#define SYSTEM_1080_50I_FRAMERATE 25

class DV100VideoEncoder : public DVVideoEncoder
{
    DYNAMIC_CAST_DECL(DV100VideoEncoder, VideoEncoder)

public:
    DV100VideoEncoder(void);
    virtual ~DV100VideoEncoder(void);

    virtual Status Init(BaseCodecParams *init);
    virtual Status GetFrame(MediaData *in, MediaData *out);
    virtual Status Close();

protected:
    DV100VideoFormat    m_VideoFormat;
    Ipp32u              m_nEncodedFrameSize;
    Ipp64f              m_FrameTimeLength;
    Ipp32s              m_nSystem720_LastDecodedChannel;
    Ipp32s              m_nDownsampledFrameWidth;

    VideoResizing       m_VideoResizing;
    BaseCodec           *m_PostProcessing;

    VideoData           m_DownsampledFrame;
    MemID               m_DownsampledFrameBufferMID;
};

}//namespace UMC

#endif //__DV100_VIDEO_ENCODER_H

#endif // (UMC_ENABLE_DVHD_VIDEO_ENCODER)
